
const path = require('path'),
  args = process.argv.splice(2),
  fs = require('fs'),
  { generateTheme, getLessVars } = require('antd-theme-generator')

mkdirsSync(path.join(process.cwd(), './node_modules/antd/lib/style/themes'))
fs.writeFileSync(path.join(process.cwd(), './node_modules/antd/lib/style/themes/default.less'), '', 'utf8')

// 递归创建目录 同步方法
function mkdirsSync (dirname) {
  if (fs.existsSync(dirname)) {
    return true
  } else {
    if (mkdirsSync(path.dirname(dirname))) {
      fs.mkdirSync(dirname)
      return true
    }
  }
}

let options = {
  // antd包位置
  antDir: path.join(process.cwd(), './node_modules/ant-design-vue'),
  // 主题文件所在文件夹
  stylesDir: path.join(process.cwd(), './src/styles'),
  // 自定义默认的主题色
  varFile: path.join(process.cwd(), './src/styles/variables.less'),
  // 项目中其他自定义的样式（如果不需要动态修改其他样式，该文件可以为空）
  mainLessFile: path.join(process.cwd(), './src/styles/index.less'),
  // 提取的less文件输出到什么地方
  outputFilePath: path.join(process.cwd(), './public/themes.less'),
  // index.html所在位置
  indexFileName: path.join(process.cwd(), './public/index.html'),
  // 是否只生成一次
  generateOnce: false
}

const config = args.find(arg => arg.startsWith('-config='))?.split('=').pop()
Object.assign(options, config)

// 设置要改变的主题变量
options.themeVariables = Array.from(new Set([...Object.keys(getLessVars(options.varFile)), '@primary-color']))
fs.existsSync(options.outputFilePath) && fs.unlinkSync(options.outputFilePath)

generateTheme(options)
